#ifndef SA_SOLVER_H
#define SA_SOLVER_H 

#include "./simulated_annealing.h"

class SA_Solver : public Simulated_Annealing {
public:
	SA_Solver(std::vector<Cube> &cubes);
	~SA_Solver() {};	
	// Transform to another status and return the index of the operation 
	virtual int Transform(TTree & tree, std::vector<int> & t);
	// get the solution and return the packed cubes
	virtual void GetAns(std::vector<Cube> &cubes);
	void SetTimeLimitation(int time_limitation);
protected:
  	int n_, time_limitation_,  Average_Volume_, SA_times_;
};

#endif /*SA_SOLVER_H*/
